package org.jeecg.common.util.blockchain;

import io.reactivex.Flowable;
import io.reactivex.functions.Function;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.web3j.abi.EventEncoder;
import org.web3j.abi.TypeReference;
import org.web3j.abi.datatypes.Address;
import org.web3j.abi.datatypes.Event;
import org.web3j.abi.datatypes.Type;
import org.web3j.abi.datatypes.generated.Uint256;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameter;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.RemoteFunctionCall;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.core.methods.response.BaseEventResponse;
import org.web3j.protocol.core.methods.response.Log;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.tx.Contract;
import org.web3j.tx.TransactionManager;
import org.web3j.tx.gas.ContractGasProvider;

/**
 * <p>Auto generated code.
 * <p><strong>Do not modify!</strong>
 * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
 * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the 
 * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
 *
 * <p>Generated with web3j version 4.5.5.
 */
@SuppressWarnings("rawtypes")
public class D___Jewellery_sol_Jewellery extends Contract {
    private static final String BINARY = "6305f5e10060005560c0604052600360808190526257424360e81b60a09081526200002e91600291906200008d565b506040805180820190915260038082526257424360e81b60209092019182526200005991816200008d565b506004805460ff191660051790553480156200007457600080fd5b50600180546001600160a01b0319163317905562000132565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d057805160ff191683800117855562000100565b8280016001018555821562000100579182015b8281111562000100578251825591602001919060010190620000e3565b506200010e92915062000112565b5090565b6200012f91905b808211156200010e576000815560010162000119565b90565b61158280620001426000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806363ea3d1d116100ad578063a7ff5ce811610071578063a7ff5ce81461069c578063a9059cbb1461070f578063b4a99a4e1461073b578063dd62ed3e1461075f578063f28532921461078d5761012c565b806363ea3d1d146103ec578063645fa7a81461051c57806370a082311461053957806395d89b411461055f578063a40598e7146105675761012c565b806325559c55116100f457806325559c551461025d578063313ce56714610283578063495c15e0146102a15780635e42241e146103c757806360a4e449146103e45761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee5780631bd96ae81461020857806323b872dd14610227575b600080fd5b6101396107b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b03813516906020013561083e565b604080519115158252519081900360200190f35b6101f661086b565b60408051918252519081900360200190f35b6102256004803603602081101561021e57600080fd5b5035610872565b005b6101da6004803603606081101561023d57600080fd5b506001600160a01b038135811691602081013590911690604001356108c6565b6101f66004803603602081101561027357600080fd5b50356001600160a01b0316610935565b61028b610947565b6040805160ff9092168252519081900360200190f35b6102be600480360360208110156102b757600080fd5b5035610950565b60405180868152602001856001600160a01b03166001600160a01b03168152602001806020018060200184151515158152602001838103835286818151815260200191508051906020019080838360005b8381101561032757818101518382015260200161030f565b50505050905090810190601f1680156103545780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561038757818101518382015260200161036f565b50505050905090810190601f1680156103b45780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610225600480360360208110156103dd57600080fd5b5035610a9f565b6101f6610c89565b6102256004803603606081101561040257600080fd5b81359190810190604081016020820135600160201b81111561042357600080fd5b82018360208201111561043557600080fd5b803590602001918460018302840111600160201b8311171561045657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104a857600080fd5b8201836020820111156104ba57600080fd5b803590602001918460018302840111600160201b831117156104db57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c8f945050505050565b6102256004803603602081101561053257600080fd5b5035610e34565b6101f66004803603602081101561054f57600080fd5b50356001600160a01b0316610fc5565b610139610fe0565b6102256004803603608081101561057d57600080fd5b813591602081013591810190606081016040820135600160201b8111156105a357600080fd5b8201836020820111156105b557600080fd5b803590602001918460018302840111600160201b831117156105d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561062857600080fd5b82018360208201111561063a57600080fd5b803590602001918460018302840111600160201b8311171561065b57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061103b945050505050565b6106b9600480360360208110156106b257600080fd5b503561121d565b60405180868152602001858152602001806020018060200184151515158152602001838103835286818151815260200191508051906020019080838360008381101561032757818101518382015260200161030f565b6102256004803603604081101561072557600080fd5b506001600160a01b038135169060200135611291565b6107436112a0565b604080516001600160a01b039092168252519081900360200190f35b6101f66004803603604081101561077557600080fd5b506001600160a01b03813581169160200135166112af565b610225600480360360208110156107a357600080fd5b50356001600160a01b03166112cc565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156108365780601f1061080b57610100808354040283529160200191610836565b820191906000526020600020905b81548152906001019060200180831161081957829003601f168201915b505050505081565b3360009081526009602090815260408083206001600160a01b039590951683529390529190912055600190565b6005545b90565b6001546001600160a01b031633146108c1576040805162461bcd60e51b815260206004820152600d60248201526c1050d0d154d4c8111153965151609a1b604482015290519081900360640190fd5b600055565b6001600160a01b03831660009081526009602090815260408083203384529091528120548211156108f657600080fd5b6001600160a01b038416600090815260096020908152604080832033845290915290208054839003905561092b84848461133d565b5060019392505050565b60086020526000908152604090205481565b60045460ff1681565b60066020908152600091825260409182902080546001808301546002808501805488516101009582161595909502600019011691909104601f810187900487028401870190975286835292956001600160a01b03909116949192918301828280156109fc5780601f106109d1576101008083540402835291602001916109fc565b820191906000526020600020905b8154815290600101906020018083116109df57829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610a8c5780601f10610a6157610100808354040283529160200191610a8c565b820191906000526020600020905b815481529060010190602001808311610a6f57829003601f168201915b5050506004909301549192505060ff1685565b6000818152600660205260409020600481015460ff161515600114610b00576040805162461bcd60e51b815260206004820152601260248201527115121254c81093d6081393d50811561254d560721b604482015290519081900360640190fd5b60018101546001600160a01b031615610b58576040805162461bcd60e51b81526020600482015260156024820152745448495320424f58204953204e4f5420594f55525360581b604482015290519081900360640190fd5b336000908152600860205260408120549054811015610bb1576040805162461bcd60e51b815260206004820152601060248201526f4f564552445241572042414c414e434560801b604482015290519081900360640190fd5b60008054600180850180546001600160a01b0319908116331782558785526006602052604090942086548155905481830180549095166001600160a01b039190911617909355600280860180549390950394869493610c2393838601939082161561010002600019019091160461143f565b5060038201816003019080546001816001161561010002031660029004610c4b92919061143f565b506004918201549101805460ff191660ff90921615159190911790553360009081526008602052604081209190915554600580549190910390555050565b60055481565b6001546001600160a01b03163314610cde576040805162461bcd60e51b815260206004820152600d60248201526c1050d0d154d4c8111153965151609a1b604482015290519081900360640190fd5b6000838152600660205260409020600481015460ff1615610d38576040805162461bcd60e51b815260206004820152600f60248201526e15121254c81251081254c81554d151608a1b604482015290519081900360640190fd5b600180820180546001600160a01b0319163317905560048201805460ff191690911790558251610d7190600283019060208601906114c4565b508151610d8790600383019060208501906114c4565b50838155600084815260066020526040902084815560018083015481830180546001600160a01b0319166001600160a01b0390921691909117905560028084018054859493610dea9380860193929182161561010002600019019091160461143f565b5060038201816003019080546001816001161561010002031660029004610e1292919061143f565b506004918201549101805460ff191660ff909216151591909117905550505050565b6000818152600660205260409020600481015460ff161515600114610e95576040805162461bcd60e51b815260206004820152601260248201527115121254c81093d6081393d50811561254d560721b604482015290519081900360640190fd5b60018101546001600160a01b03163314610eee576040805162461bcd60e51b81526020600482015260156024820152745448495320424f58204953204e4f5420594f55525360581b604482015290519081900360640190fd5b600180820180546001600160a01b03199081168255336000908152600860209081526040808320805484540190819055888452600690925290912085548155925483850180549093166001600160a01b039190911617909155600280850180549294869493610f7093808601939282161561010002600019019091160461143f565b5060038201816003019080546001816001161561010002031660029004610f9892919061143f565b506004918201549101805460ff191660ff9092161515919091179055505060005460058054909101905550565b6001600160a01b031660009081526008602052604090205490565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108365780601f1061080b57610100808354040283529160200191610836565b6001546001600160a01b0316331461108a576040805162461bcd60e51b815260206004820152600d60248201526c1050d0d154d4c8111153965151609a1b604482015290519081900360640190fd5b6000848152600760205260409020600481015460ff16156110e4576040805162461bcd60e51b815260206004820152600f60248201526e15121254c81251081254c81554d151608a1b604482015290519081900360640190fd5b6000858152600660205260409020600481015460ff161515600114611148576040805162461bcd60e51b815260206004820152601560248201527415121254c81093d6081254c81393d50811561254d5605a1b604482015290519081900360640190fd5b600180830186905560048301805460ff19169091179055835161117490600284019060208701906114c4565b50825161118a90600384019060208601906114c4565b50858255600086815260076020526040902086815560018084015481830155600280850180548694936111d19380860193929182161561010002600019019091160461143f565b50600382018160030190805460018160011615610100020316600290046111f992919061143f565b506004918201549101805460ff191660ff9092161515919091179055505050505050565b60076020908152600091825260409182902080546001808301546002808501805488519481161561010002600019011691909104601f8101879004870284018701909752868352929590949192918301828280156109fc5780601f106109d1576101008083540402835291602001916109fc565b61129c33838361133d565b5050565b6001546001600160a01b031681565b600960209081526000928352604080842090915290825290205481565b6001546001600160a01b0316331461131b576040805162461bcd60e51b815260206004820152600d60248201526c1050d0d154d4c8111153965151609a1b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821661135057600080fd5b6001600160a01b03831660009081526008602052604090205481111561137557600080fd5b6001600160a01b0382166000908152600860205260409020548181011161139b57600080fd5b6001600160a01b038083166000818152600860209081526040808320805495891680855282852080548981039091559486905281548801909155815187815291519390950194927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a36001600160a01b0380841660009081526008602052604080822054928716825290205401811461143957fe5b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061147857805485556114b4565b828001600101855582156114b457600052602060002091601f016020900482015b828111156114b4578254825591600101919060010190611499565b506114c0929150611532565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061150557805160ff19168380011785556114b4565b828001600101855582156114b4579182015b828111156114b4578251825591602001919060010190611517565b61086f91905b808211156114c0576000815560010161153856fea2646970667358221220e84a100f5bb07639f90f8919bab305c68677a98237d36090585db24c0740951964736f6c63430006060033";

    public static final String FUNC_ADDBOX = "AddBox";

    public static final String FUNC_ADDJEWELLERY = "AddJewellery";

    public static final String FUNC_CHANGEOWNER = "ChangeOwner";

    public static final String FUNC_DEFUSIONBOX = "DefusionBox";

    public static final String FUNC_FUSIONBOX = "FusionBox";

    public static final String FUNC_OWNER = "Owner";

    public static final String FUNC_SETBOXVALUE = "SetBoxValue";

    public static final String FUNC_ALLOWANCE = "allowance";

    public static final String FUNC_APPROVE = "approve";

    public static final String FUNC_BALANCEOF = "balanceOf";

    public static final String FUNC_DECIMALS = "decimals";

    public static final String FUNC_M_BALANCE = "m_Balance";

    public static final String FUNC_M_BOXMAP = "m_BoxMap";

    public static final String FUNC_M_JEWELLERYMAP = "m_JewelleryMap";

    public static final String FUNC_M_TOTALSUPPLY = "m_TotalSupply";

    public static final String FUNC_NAME = "name";

    public static final String FUNC_SYMBOL = "symbol";

    public static final String FUNC_TOTALSUPPLY = "totalSupply";

    public static final String FUNC_TRANSFER = "transfer";

    public static final String FUNC_TRANSFERFROM = "transferFrom";

    public static final Event TRANSFER_EVENT = new Event("Transfer", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>() {}));
    ;

    @Deprecated
    protected D___Jewellery_sol_Jewellery(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    protected D___Jewellery_sol_Jewellery(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
    }

    @Deprecated
    protected D___Jewellery_sol_Jewellery(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    protected D___Jewellery_sol_Jewellery(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public List<TransferEventResponse> getTransferEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(TRANSFER_EVENT, transactionReceipt);
        ArrayList<TransferEventResponse> responses = new ArrayList<TransferEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            TransferEventResponse typedResponse = new TransferEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
            typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
            typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public Flowable<TransferEventResponse> transferEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(new Function<Log, TransferEventResponse>() {
            @Override
            public TransferEventResponse apply(Log log) {
                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(TRANSFER_EVENT, log);
                TransferEventResponse typedResponse = new TransferEventResponse();
                typedResponse.log = log;
                typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
                typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
                typedResponse.value = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

    public Flowable<TransferEventResponse> transferEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
        filter.addSingleTopic(EventEncoder.encode(TRANSFER_EVENT));
        return transferEventFlowable(filter);
    }

    public RemoteFunctionCall<TransactionReceipt> AddBox(BigInteger id, String name, String boxinfo) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_ADDBOX, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(id), 
                new org.web3j.abi.datatypes.Utf8String(name), 
                new org.web3j.abi.datatypes.Utf8String(boxinfo)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> AddJewellery(BigInteger id, BigInteger boxid, String name, String jewelleryinfo) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_ADDJEWELLERY, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(id), 
                new org.web3j.abi.datatypes.generated.Uint256(boxid), 
                new org.web3j.abi.datatypes.Utf8String(name), 
                new org.web3j.abi.datatypes.Utf8String(jewelleryinfo)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> ChangeOwner(String newowner) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_CHANGEOWNER, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, newowner)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> DefusionBox(BigInteger id) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_DEFUSIONBOX, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(id)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> FusionBox(BigInteger id) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_FUSIONBOX, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(id)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> Owner() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_OWNER, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> SetBoxValue(BigInteger newBoxValue) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_SETBOXVALUE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(newBoxValue)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> allowance(String param0, String param1) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_ALLOWANCE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, param0), 
                new org.web3j.abi.datatypes.Address(160, param1)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> approve(String _spender, BigInteger _value) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_APPROVE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, _spender), 
                new org.web3j.abi.datatypes.generated.Uint256(_value)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> balanceOf(String _from) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_BALANCEOF, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, _from)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> decimals() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_DECIMALS, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> m_Balance(String param0) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_M_BALANCE, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, param0)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> m_BoxMap(BigInteger param0) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_M_BOXMAP, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> m_JewelleryMap(BigInteger param0) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_M_JEWELLERYMAP, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(param0)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> m_TotalSupply() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_M_TOTALSUPPLY, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> name() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_NAME, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> symbol() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_SYMBOL, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> totalSupply() {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_TOTALSUPPLY, 
                Arrays.<Type>asList(), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> transfer(String _to, BigInteger _value) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_TRANSFER, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, _to), 
                new org.web3j.abi.datatypes.generated.Uint256(_value)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    public RemoteFunctionCall<TransactionReceipt> transferFrom(String _from, String _to, BigInteger _value) {
        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
                FUNC_TRANSFERFROM, 
                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(160, _from), 
                new org.web3j.abi.datatypes.Address(160, _to), 
                new org.web3j.abi.datatypes.generated.Uint256(_value)), 
                Collections.<TypeReference<?>>emptyList());
        return executeRemoteCallTransaction(function);
    }

    @Deprecated
    public static D___Jewellery_sol_Jewellery load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return new D___Jewellery_sol_Jewellery(contractAddress, web3j, credentials, gasPrice, gasLimit);
    }

    @Deprecated
    public static D___Jewellery_sol_Jewellery load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return new D___Jewellery_sol_Jewellery(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
    }

    public static D___Jewellery_sol_Jewellery load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return new D___Jewellery_sol_Jewellery(contractAddress, web3j, credentials, contractGasProvider);
    }

    public static D___Jewellery_sol_Jewellery load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return new D___Jewellery_sol_Jewellery(contractAddress, web3j, transactionManager, contractGasProvider);
    }

    public static RemoteCall<D___Jewellery_sol_Jewellery> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(D___Jewellery_sol_Jewellery.class, web3j, credentials, contractGasProvider, BINARY, "");
    }

    public static RemoteCall<D___Jewellery_sol_Jewellery> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
        return deployRemoteCall(D___Jewellery_sol_Jewellery.class, web3j, transactionManager, contractGasProvider, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<D___Jewellery_sol_Jewellery> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(D___Jewellery_sol_Jewellery.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
    }

    @Deprecated
    public static RemoteCall<D___Jewellery_sol_Jewellery> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
        return deployRemoteCall(D___Jewellery_sol_Jewellery.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
    }

    public static class TransferEventResponse extends BaseEventResponse {
        public String from;

        public String to;

        public BigInteger value;
    }
}
